講完了 Volume 之後,接著要講 Network 了。
在過去,各種服務都是單體架構(Monolithic)的,簡單來說就是整包就是一個服務,包含服務、測試等等的東西全部都在一包裡面。不出問題時都還好,一旦出現問題,需要修復時就會面臨到就算只動一部分,有可能牽涉的範圍就很廣泛。
因此有人提出了微服務的概念,微服務簡單說就是將原本單體架構的各個單元分開,例如資料庫或其他小單元等等,跑在各自的運行環境中,在將各個小單元聯繫起來,這樣子做的優點是如果其中一個服務掛掉,整個服務至少還在,避免全面停擺,在更新及維護時也可以針對各個部分進行維護。
雖然微服務概念看起來很好,但在實作時還是要看當初設計人員的功力如何。
幼稚園小朋友畫出的設計圖跟20年以上經驗的專業設計師畫出的設計圖如果都拿去蓋房子,後者就算不是豪宅至少也是安全的房子,至於前者的話一定是危樓。微服務也是同理。
好了,講了這麼多,各個單元要聯繫起來,就一定少不了網路。因此 Docker 也提供 Network 來聯繫各個 Container 。
Docker 中如果是各個 Container 要連結到 Network 有兩種方式
我個人是都使用第一種方式,因此這篇主要講第一種方式。
首先,要先建立 Network 可以使用下面的指令。
$ docker network create --driver bridge <network_name>
# 範例
$ docker network create --driver bridge test
建立好之後,就可以讓 Container 連結到 Network 了。
$ docker run --net=container:<network_name> <image_name>
# 範例
$ docker run --net=container:test my-project
只要依序將各個 Container 連結到 Network 就可以互相溝通了。
接著如果需要管理 Network 可以使用以下的指令。
# 列出所有的 Network
$ docker network ls
# 刪除 Network
$ docker network rm <network_name>
# 刪除不使用的 Network
$ docker network prune
需要注意的是 Docker 有三個預設的 Network ,注意不要刪到了喔。
那麼就先到這邊, Network 比較不好單獨使用,因此這篇就沒有 Demo 了,明天介紹的東西搭配 Network 才更能體會到 Network 的使用方式。
大家掰~掰~